define(["jQuery", "kendo"], function ($, kendo) {
    return {
    	panel:null,
    	contentDOMid:null,
    	isShow:false,
		isEditMode:false,
    	creationMode:false,
    	lastTop:0,
    	id:"", 
		
		show : function(position){
			var center = App.getAbsoluteCenter();
			$("#nic-edit-panel-container" ).show();
			if(App.richText.menu.isEditMode){
					$("#nic-edit-panel-container" ).css({
						"z-index":"999",
						"position":"absolute",
						"left":$("#" + App.richText.menu.id).offset().left+"px",
						"top":$("#" + App.richText.menu.id).offset().top+$("#" + App.richText.menu.id).height()+"px"
					});
			}
			App.richText.menu.isShow = true;
			App.richText.menu.creationMode = true;
			
			// Nanda - Notes: Initial value font size and color 29072013
			$(".FontSize").text("8");
			$("#colorSelected").css("background-color","#000000") ; 
		},
		
		hideMenu : function(){
			var isBuble = $("#"+App.richText.menu.id).attr("object_type") == "sticky-text";
			$("#nic-edit-panel-container" ).hide();
			App.richText.menu.isShow = false;
			App.richText.menu.creationMode = false;
			App.richText.menu.isEditMode = false;
			$("#"+App.richText.menu.id).draggable( 'enable' );	
			$("#"+App.richText.menu.id).resizable( 'enable' );	
			App.richText.menu.panel.nicInstances.splice(0,1);
			$("#" + App.richText.menu.id).attr("contenteditable",false);
			App.prepareCreation = false;
			if(isBuble)
			{
				$("#"+App.richText.menu.id).addClass('taped');
			}
			else
			{
				$("#"+App.richText.menu.id).css( 'background-color','' );
			}
			$("#"+App.richText.menu.id).css( 'border','' );
			$("#"+App.richText.menu.id).css( 'overflow','visible' );
			App.richText.menu.id = "";
		},
		
		cancel : function(){
			if(!App.richText.menu.isEditMode){
				$("#" + App.richText.menu.id).remove();
			}else{
				console.log(App.richText.textBefore);
				$("#text_content_" + App.richText.menu.id).html(App.richText.textBefore);
			}
			App.richText.menu.hideMenu();
			
		},
		
        init: function (e) {
        	console.log("init panel..");
        	// alert("init panel..");
			$('.nicEdit-selectTxt').text('asas');
			App.richText.menu.panel = new nicEditor(); 
			App.richText.menu.panel.setPanel('nic-edit-panel');
			
			$("#nic-edit-panel-container").draggable();
			// $('.nicEdit-Picker-Text').hide();
			// $('.nicEdit-Picker-Text').jPicker(
					// {
					 // window:
						  // {
							// expandable: true
						  // },
						  // images:
						  // {
							// clientPath : App.baseUrl+'assets/css/images/jPicker/'
						  // }
					// },
					// function(color, context)
					// {
						// var all = color.val('all');  
						 
						// var colorText = "#"+rgbToHex("rgb("+all.r+","+all.g+","+all.b+")");  
						// document.execCommand("foreColor", false, colorText); 
					// }
			// );
			
			var rgbToHex = (function () {
				var rx = /^rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)$/i;

				function pad(num) {
					if (num.length === 1) {
						num = "0" + num;
					}

					return num;
				}

				return function (rgb, uppercase) {
					var rxArray = rgb.match(rx),
						hex;

					if (rxArray !== null) {
						hex = pad(parseInt(rxArray[1], 10).toString(16)) + pad(parseInt(rxArray[2], 10).toString(16)) + pad(parseInt(rxArray[3], 10).toString(16));

						if (uppercase === true) {
							hex = hex.toUpperCase();
						}

						return hex;
					}

					return;
				};
			}());
			$('.text-edit-tools').live('click', function(e){
				if(!App.toolboxValidation("tool_text_ico"))
				{
					return
				}
				$(this).addClass('active');
				App.openedTool = $(this);
				App.prepareTextCreation(true);
				
			});
			$('.text-edit-bubble-tools').live('click', function(e){
				if(!App.toolboxValidation("tool_text_bubble_ico"))
				{
					return
				}
				$(this).addClass('active');
				App.openedTool = $(this);
				$("#bubble-dragable-menu").offset({top:$(this).offset().top,left:$(this).offset().left});
				App.bubbleToolbox.show();
			});	
			$("#text-save").click(function(){
			
				App.openedTool.removeClass('active');
				App.openedTool =false;
				if(!App.richText.menu.isEditMode){
					App.addTextToServer(App.richText.menu);
				}else{
					var emit = $("#"+App.richText.menu.id).clone();
					var id = $("#"+App.richText.menu.id).attr("id");
					
					var width = $("#"+App.richText.menu.id).width();
					var height = $("#"+App.richText.menu.id).height();
					
					$("#"+App.richText.menu.id).css('top',App.richText.lastTop);
					var top =  $("#"+App.richText.menu.id).position().top;
					var left =  $("#"+App.richText.menu.id).position().left;
					
					var objectJson = {
						"content":$("#text_content_"+App.richText.menu.id).html(),
						"id": id, 
						"posy": top, 
						"posx": left, 
						"height": parseInt(height), 
						"width": parseInt(width) 
					};
					var url = App.baseUrl+"CommHub/update_object_property";
					var newData = {"file_id": App.fileId,
									"page_id":App.pageId,
									"object_json":JSON.stringify(objectJson),
									};
							
					var req = $.ajax({
						type: 'POST',
						url: url,
						data:newData
					});
					req.done(function(msg){
					
						msg = JSON.parse(msg);
						App.currentStackIndex++;
						App.actionStack[App.currentStackIndex] = msg.history;
						console.log(App.currentStackIndex);
						console.log(App.actionStack.length-App.currentStackIndex);
						
						var contentObject=$("#text_content_"+ emit.attr('id'));
						var data = {
							content_object:contentObject.html(),
							height:height,
							width:width,
						};
						
						 $("#"+id).width(width);
						 $("#"+id).height(height);
						App.socket.emit('cm_object_send', {id : emit.attr('id'), kind: "text", cmd : "content-update" , object : data});
					});
					App.richText.menu.hideMenu();
				}
					
			});
			
			$("#text-cancel").click(function(){
				var r=confirm(App.localize("%cancel_confirmation"));
				if (r==true)
				{
					if(App.richText.menu.isEditMode)
						$("#"+App.richText.menu.id).css('top',App.richText.lastTop);
					App.openedTool.removeClass('active');
					App.openedTool =false;
					App.richText.menu.cancel();
				}
				else
				{
					console.log("You pressed Cancel!");
				}
			});
		},
		
		createObject : function(point){
			if(App.richText.menu.creationMode){
				console.log("create rich text object...");
				if(App.richText.menu.isShow){
					App.richText.menu.show();
					var id = +new Date + "";
					$("#" + App.rootCanvas)
						.append($('<div ' + 
								'style="background-color:white;' + 
								'border:5px solid red;' + 
								'overflow:hidden;' +
								'position:absolute;' +
								'z-index:99;' +
								'"></div>')
						.attr("id",id)
						.addClass("nic-edit-element")
					);
					var nc = $('.drawContainer').getNiceScroll();
					nc = nc[0];
					console.log(nc.scrollTop());
					console.log(nc.scrollLeft());
					var offsetTop =nc.scrollTop();
					var offsetLeft = Math.floor(point.x-($("#" + id).width()/2))+nc.scrollLeft();
					// var nameBrowser = App.setBrowserDetect();
					// if(nameBrowser == "FireFox" && App.draw.panOffset.top!=0){ 
						// var zoom=$("#" + App.rootCanvas).width()*1.0 / screen.availWidth;
						// if(zoom>1)
							// offsetTop = (App.draw.panOffset.top+$("#header").height())*1.0 /zoom;
					// }
					
					
					$("#" + id).css({
						top:offsetTop,
						//top:Math.floor(point.y-($("#" + id).height()/2)),
						left:offsetLeft
					});
					
					//nic-edit-panel-container
					var menuTop =  $("#"+id).offset().top + $("#"+id).height()+50;
					var menuLeft =  $("#"+id).offset().left;
					$("#nic-edit-panel-container" ).css({ 
						// top: $("#" + id).position().top+$('#rootContainer').offset().top-$("#nic-edit-panel-container").height()-20, 
						// left: $("#" + id).position().left+$('#rootContainer').offset().left
						top: menuTop, 
						left: menuLeft
					});
				
					App.richText.menu.id = id;
					App.richText.menu.panel.addInstance(id);
					console.log($(this));
					// $('#' + id).on('click',function(){
					$('#' + id).dblclick(function() {
						console.log("double click");
						$('#nic-edit-panel-container').draggable();
						$(this).draggable( 'disable' );
						$(this).trigger('click');
					});
				}
			}
		}
	}
});